package cc.wsyw126.java.nowcoder.interview;

/**
 * Created by Administrator on 2017/4/24.
 * 有一副由NxN矩阵表示的图像，这里每个像素用一个int表示，请编写一个算法，在不占用额外内存空间的情况下(即不使用缓存矩阵)，将图像顺时针旋转90度。给定一个NxN的矩阵，和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500，图像元素小于等于256。
 */
public class Transform {
    public int[][] transformImage(int[][] mat, int n) {
        for (int i = 0; i < n >> 1; i++) {
            for (int j = i; j < n - 1 - i; j++) {
               int k = mat[i][j];
                mat[i][j] = mat[n - 1 - j][i];
                mat[n - 1 - j][i] = mat[n - 1 - i][n - 1 - j];
                mat[n - 1 - i][n - 1 - j] = mat[j][n - 1 - i];
                mat[j][n - 1 - i] = k;
                }
            }

        return mat;
    }

    public static void main(String[] args) {
        Transform transform = new Transform();
        int[][] mat = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
        int[][] ints = transform.transformImage(mat, 3);
        for (int i = 0; i < ints.length; i++) {
            for (int j = 0; j < ints[0].length; j++) {
                System.out.print(ints[i][j] + "\t");
            }
            System.out.println();
        }
    }
}
